<!DOCTYPE html>
<meta charset="utf-8">
<title>Test: </title>
<link rel="help" href="https://svgwg.org/svg2-draft/interact.html#ScriptElement">
<meta name="assert" content="The same scripts can work on both HTML and SVG elements.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>var total = 0;</script>
<script>function s0() { total += 100; return s1(); }</script>
<svg>
  <script>function s1() { total += 20; return s2(); }</script>
  <g>
    <script>function s2() { return s3(); }</script>
    <circle id="spot"><clipPath id="spot-first-child"/>
      <script>function s3() { return s4(); }</script>
    </circle>
  </g>
  <desc>
    <script>function s4() { return s5(); }</script>
  </desc>
  <filter>
    <script>function s5() { return s6(); }</script>
    <feFlood>
      <script>function s6() { return s7(); }</script>
    </feFlood>
  </filter>
  <text>
    <script>function s7() { return s8(); }</script>
    <tspan>
      <script>function s8() { return s9(); }</script>
    </tspan>
  </text>
  <use href="spot">
    <script>function s9() { return s10(); }</script>
  </use>
</svg>
<div id="box"><script id="box-first-child">function s10() { total += 3; return s11(); }</script>
  <span>
    <script>function s11() { return 'same'; }</script>
  </span>
</div>

<script>
test(function(){
  assert_equals(s0(), 'same');
  assert_equals(total, 123);

  for (let elementName of ['spot', 'box']) {
    let element = document.getElementById(elementName);
    let firstChild = element.firstChild;
    assert_equals(firstChild.id, elementName + '-first-child');
  }
}, 'The same scripts work on both HTML and SVG elements');
</script>
